//
//  IWxChatMgrContact.h
//  WXIMSDK
//  提供对好友添加、删除、接受、拒绝等操作
//  Created by vince on 14-9-5.
//  Copyright (c) 2014年 网信金融集团. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "EWxChatMgrContactDelegate.h"
#import "ChatContact.h"


@interface IWxChatMgrContact : NSObject

+ (IWxChatMgrContact *)sharedContact;



/*!
 @method
 @brief         异步方法 请求获取我所有好友联系人
 @result        可以主动更新本地联系人数据 
                返回 requestMyAllContactsRspState:errorState:
 */
- (void)requestMyAllContacts;

/*!
 @method
 @brief         同步方法 设置是否自动接收添加好友的邀请
 @discussion
 @param accept  YES or NO 是否自动接收添加好友
 @result        是否设置成功
 */
- (void)setAutoAcceptNewContactInvite:(BOOL)accept;


/*!
 @method
 @brief         同步方法，获取本地所有好友联系人列表
 @result        返回ChatContact对象数组  为空：没有联系人
 */
- (NSMutableArray *)getMyAllLocalContacts;


/*!
 @method
 @brief         同步方法，获取所有我已邀请的好友和邀请我的好友列表
 @result        返回 ChatContactRequest 对象数组  为空：没有我邀请的和邀请我的人
 */
- (NSMutableArray *)getAllInviteOrInvitedContacts;


/*!
 @method
 @brief           邀请好友
 @discussion      异步方法
 @param contactId 邀请好友的Id
 @param message   邀请好友时的附带信息
 @result          inviteContactRspState
 */
- (void)inviteContact:(NSString *)contactId message:(NSString *)message delegate:(id)delegate;

/*!
 @method
 @brief           拒绝好友的邀请
 @discussion      异步方法
 @param contactId 要拒绝的好友Id
 @param reason    原因
 @result          rejectInviteContactRspState
 */
- (void)rejectInviteContact:(NSString *)contactId reason:(NSString *)reason delegate:(id)delegate;


/*!
 @method
 @brief       从好友列表中删除某个好友
 @discussion  异步方法
 @param       contactId 要删除的好友Id
 @result      removeContactRsp:contactId:errorState:
 */
- (void)removeContact:(NSString *)contactId delegate:(id)delegate;


/*!
 @method
 @brief     修改某个好友备注信息
 @discussion
 @param     contactId 要修改备注的好友Id
 @param     remarkStr 修改的备注信息
 @result    remarkContactRsp:contactId:errorState:
 */
- (void)remarkContact:(NSString *)contactId remarkMsg:(NSString *)remarkStr delegate:(id)delegate;


/*!
 @method
 @brief           接受某个好友发送的好友请求
 @discussion
 @param contactId 需要接受的好友Id
 @param pError    错误信息
 @result          acceptContactInviteRsp:contactId:errorState:
 */
- (void)acceptContactInvite:(NSString *)contactId delegate:(id)delegate;



- (void)registDelegate:(id<EWxChatMgrContactDelegate>)delegate;

- (void)unregistDelegate:(id<EWxChatMgrContactDelegate>)delegate;



/*!
 @method
 @brief           获取联系人对象
 @discussion
 @param contactId 要获取的好友Id
 @result          返回ChatContact对象或nil
 */
- (ChatContact *)fetchChatContactByContactId:(NSString *)contactId;


@end
